/**
 * 截取字符串
 * @param {String} str  需要截取的字符串;
 * @param suffix{String} 添加后缀(非必要),默认为"...";
 * @param {Number} len 需要截取的长度,字符串长度不足返回本身;
 * @returns 返回截取后的字符串;
 */
const substr = (str, len, suffix) => {
	if (!suffix) {
		suffix = '...'
	}
	return str.length > len ? str.slice(0, len) + suffix : str
}

/**
 * description : 得到字符串的字节长度;
 * @return 返回字符串的字节长度(eg:"一二12"的字节长度是6);
 */
const getLength = function(str) {
	var text = str.replace(/[^\x00-\xff]/g, '**')
	return text.length
}

/**
 * description : 按字节长度截取字符串,并添加后缀.
 * @param len 需要截取的长度,字符串长度不足返回本身;
 * @param suffix 添加后缀(非必要),默认为"...";
 * @return 返回截取后的字符串;
 * @requires getLength;
 */
const substrByte = function(str, len, suffix) {
	var tempStr = str
	if (getLength(str) > len) {
		if (!suffix) {
			suffix = '...'
		}
		var i = 0
		for (var z = 0; z < len; z++) {
			if (tempStr.charCodeAt(z) > 255) {
				i = i + 2
			} else {
				i = i + 1
			}
			if (i >= len) {
				tempStr = tempStr.slice(0, z + 1) + suffix
				break
			}
		}
		return tempStr
	} else {
		return str + ''
	}
}

// 模块导出
module.exports = {
	substr,
	substrByte
}
